#ifndef KALLOC_H
#define KALLOC_H

/* 物理内存管理（伙伴系统）接口 */
void pmm_init(void);

/* 单页接口 */
void* alloc_page(void);
void  free_page(void* p);

/* 连续页接口：
 * alloc_pages(n) 返回至少 n 页的连续块（大小为 2^order 页），首地址页对齐。
 * free_pages(p, order) 释放一块 2^order 页的块。
 * free_pages_infer(p) 自动根据元数据推断 order 并释放（推荐）。
 */
void* alloc_pages(int n);
void  free_pages(void* p, int order);
int   free_pages_infer(void* p);   /* 返回释放使用的 order；失败返回 <0 */

#endif